package com.luxsoft.siipap.em.replica.importadores.cxc.parches;

import java.math.BigDecimal;
import java.sql.Types;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.SqlParameterValue;

import com.luxsoft.siipap.service.ServiceLocator2;
import com.luxsoft.siipap.util.DBUtils;
import com.luxsoft.siipap.util.DateUtil;
import com.luxsoft.siipap.ventas.model.Venta;

public class AjustaVentas {
	
	public void execute(){
		//String sql="select b.fecha,a.* from SW_VENTASCREDITO a join sw_ventas b on(a.VENTA_ID=b.VENTA_ID) where b.fecha>? order by b.fecha ";
		String sql="select b.fecha,a.* from SW_VENTASCREDITO a join sw_ventas b on(a.VENTA_ID=b.VENTA_ID) where a.venta_id in(select x.venta_id from v_ventas x where x.saldo>0 and x.fecha>?) order by b.fecha";
		SqlParameterValue p1=new SqlParameterValue(Types.DATE,DateUtil.toDate("31/12/2008"));
		Object[] params=new Object[]{p1};
		List<Map<String, Object> > rows=ServiceLocator2.getAnalisisJdbcTemplate().queryForList(sql,params);
		System.out.println("Ventas a procesar: "+rows.size());
		for(Map<String,Object> row:rows){
			System.out.println(row);
			Number id=(Number)row.get("VENTA_ID");
			Venta v=ServiceLocator2.getVentaDao().buscarPorOracleId(id.longValue());			
			if(v!=null){
				
				//Date vto=(Date)row.get("VENCIMIENTO");
				Date fechaRevCxC=(Date)row.get("FECHAREVISIONCXC");
				Number plazo=(Number)row.get("PLAZO");
				Number revision=(Number)row.get("REVISION");
				Date fechaRecCxC=(Date)row.get("FECHARECEPCIONCXC");
				Date reprogramarPago=(Date)row.get("REPROGRAMARPAGO");
				Number revizada=(Number)row.get("REVISADA");
				Number descuento=(Number)row.get("DESCUENTO");
				
				//v.setVencimiento(vto);
				//v.setFechaRevisionCxc(fechaRevCxC);
				//v.setPlazo(plazo.intValue());
				//v.setRevision(revision.doubleValue()==1);
				//v.setFechaRecepcionCXC(fechaRecCxC);
				//v.setReprogramarPago(reprogramarPago);
				//v.setRevisada(revizada.doubleValue()==1);
				v.setDescuentoGeneral(descuento.doubleValue()/100);
				ServiceLocator2.getVentaDao().save(v);
			}else{
				System.out.println("No encontro venta: "+row);
			}
		}
	}
	
	public static void main(String[] args) {
		DBUtils.whereWeAre();
		new AjustaVentas().execute();
	}

}
